using System;
using Microsoft.VisualStudio.Modeling;

namespace DslCrossModelFramework.ModelTraversal {

    /// <summary>
    /// Implements a domain class as a cross model proxy object
    /// </summary>
    public interface ICrossModelProxyElement {

        /// <summary>
        /// Gets the type of the target model element.
        /// </summary>
        /// <value>The type of the target model element.</value>
        Type TargetModelElementType{ get; }

        /// <summary>
        /// Determines whether the specified model element is a valid target.
        /// </summary>
        /// <param name="modelElement">The model element.</param>
        /// <returns>
        /// 	<c>true</c> if the specified model element is a valid target; otherwise, <c>false</c>.
        /// </returns>
        bool IsValidTarget(ModelElement modelElement);

        /// <summary>
        /// Gets the target path.
        /// </summary>
        /// <value>The target path.</value>
        ModelPath TargetPath{ get; }
    }
}